type: object
properties:
  host:
    type: string
    description: |
      The domain of the vCenter server.
  username:
    type: string
    description: |
      The login ID.
  password:
    type: string
    description: |
      The user's password.
  insecure:
    type: boolean
    description: |
      Set to `true` if vCenter has a self-signed certificate.
  vmFolderPath:
    type: string
    description: |
      The path to the VirtualMachine Folder where the cloned VMs will be created.
  regionTagCategory:
    type: string
    description: |
      The name of the tag category used to identify the region (vSphere Datacenter).
  zoneTagCategory:
    type: string
    description: |
      The name of the tag category used to identify the region (vSphere Cluster).
  disableTimesync:
    type: boolean
    description: |
      Disable time synchronization on the vSphere side.

      > **Caution!** This parameter will not disable the NTP daemons in the guest OS, but only disable the time correction on the part of ESXi.
  region:
    type: string
    description: |
      Is a tag added to the vSphere Datacenter where all actions will occur: provisioning VirtualMachines, storing virtual disks on datastores, connecting to the network.
  zones:
    type: array
    items:
      type: string
    description: |
      The globally restricted set of zones that this Cloud Provider works with.
  sshKeys:
    type: array
    items:
      type: string
    description: |
      A list of public SSH keys in plain-text format.
  externalNetworkNames:
    type: array
    items:
      type: string
    description: |
      Names of networks (just the name and not the full path) connected to `VirtualMachines` and used by `vsphere-cloud-controller-manager` to insert ExternalIP into the `.status.addresses` field in the Node API object.
  internalNetworkNames:
    type: array
    items:
      type: string
    description: |
      Names of networks (just the name and not the full path) connected to `VirtualMachines` and used by `vsphere-cloud-controller-manager` to insert InternalIP into the `.status.addresses` field in the Node API object.
  storageClass:
    type: object
    properties:
      exclude:
        type: array
        items:
          type: string
        description: |
          A list of StorageClass names (or regex expressions for names) to exclude from the creation in the cluster.
        x-examples:
        - [".*-lun101-.*", "slow-lun103-1c280603"]
      default:
        type: string
        description: |
          The name of StorageClass that will be used by default in the cluster.

          If the parameter is omitted, the default StorageClass will be one of the following:
            * An arbitrary StorageClass present in the cluster that has the default annotation.
            * The first (in lexicographic order) StorageClass of those created by the module.
        x-examples:
        - "fast-lun102-7d0bf578"
      compatibilityFlag:
        type: string
        enum: ["legacy", "migration"]
        description: |
          A flag allowing the use of the old CSI version:
            * `legacy` — use the old version of the driver. FCD discs only, no online-resizing;
            * `migration` — in this case, both drivers will be available in the cluster at the same time. This mode is used to migrate from an old driver.
  nsxt:
    type: object
    description: |
      Kubernetes load balancer support using NSX-T for the vSphere cloud controller manager.
    required: [defaultIpPoolName, tier1GatewayPath, user, password, host]
    properties:
      defaultIpPoolName:
        type: string
        description: |
          Name of the default IP pool used for the SVC's without `loadbalancer.vmware.io/class` annotation set.
        x-examples:
        - pool1
      defaultTcpAppProfileName:
        type: string
        description: |
          Name of default NSX-T application profile used for TCP connections.
        default: "default-tcp-lb-app-profile"
        x-examples:
        - default-tcp-lb-app-profile
        - tcp-profile1
      defaultUdpAppProfileName:
        type: string
        description: |
          Name of default NSX-T application profile used for UDP connections.
        default: "default-udp-lb-app-profile"
        x-examples:
        - default-udp-lb-app-profile
        - udp-profile1
      size:
        type: string
        description: |
          Size of load balancer service.
        enum: ["SMALL", "MEDIUM", "LARGE", "XLARGE"]
        default: "MEDIUM"
        x-examples:
        - SMALL
      tier1GatewayPath:
        description: |
          Policy path for the NSX-T tier1 gateway.
        type: string
        x-examples:
        - /path/tier1
      user:
        type: string
        description: |
          NSX-T user name.
        x-examples:
        - user
      password:
        type: string
        description: |
          NSX-T password.
        x-examples:
        - password
      host:
        type: string
        description: |
          NSX-T host.
        x-examples:
        - 1.2.3.4
      insecureFlag:
        type: boolean
        description: |
          To be set to true if NSX-T uses self-signed certificate.
        x-examples:
        - true
        - false
      loadBalancerClass:
        type: array
        description: |
          Additional section to define Load Balancer Classes (to use class, set annotation `loadbalancer.vmware.io/class: <class name>` to SVC).
        items:
          required: [name, ipPoolName]
          properties:
            name:
              type: string
              description: |
                Load Balancer Class name to use in SVC annotation `loadbalancer.vmware.io/class: <class name>`.
            ipPoolName:
              type: string
              description: |
                Name of the IP pool.
            tcpAppProfileName:
              type: string
              description: |
                Name of application profile used for TCP connections.
              x-doc-default: "defaultTcpAppProfileName"
            udpAppProfileName:
              type: string
              description: |
                Name of application profile used for UDP connections.
              x-doc-default: "defaultUdpAppProfileName"
        x-examples:
        - []
        - {"name": "LBC1", "ipPoolName": "pool2"}
        - {"name": "LBC1", "ipPoolName": "pool2", "tcpAppProfileName": "profile2" , "udpAppProfileName": "profile3"}
